package com.yz.jvm.reflect;

import java.lang.reflect.Method;

/**
 * 在第 15 次（从 0 开始数）反射调用时，我们便触发了动态实现的生成。
 * 这时候，Java 虚拟机额外加载了不少类。其中，最重要的当属 GeneratedMethodAccessor1
 * 。并且，从第 16 次反射调用开始，我们便切换至这个刚刚生成的动态实现。
 */
public class TestV1 {
    public static void target(int i) {
        new Exception("#" + i).printStackTrace();
    }

    public static void main(String[] args) throws Exception{
        Class<?> klass = Class.forName("com.yz.jvm.reflect.TestV1");
        Method method = klass.getMethod("target", int.class);
        for (int i = 0; i < 20; i++) {
            method.invoke(null, i);
        }
    }
}
